package cn.iocoder.yudao.module.system.convert.user;

import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO;
import cn.iocoder.yudao.module.system.repository.mybatis.domain.dept.Dept;
import cn.iocoder.yudao.module.system.repository.mybatis.domain.dept.Post;
import cn.iocoder.yudao.module.system.repository.mybatis.domain.permission.Role;
import cn.iocoder.yudao.module.system.repository.mybatis.domain.user.AdminUser;
import cn.iocoder.yudao.module.system.vo.user.profile.UserProfileRespVO;
import cn.iocoder.yudao.module.system.vo.user.profile.UserProfileUpdatePasswordReqVO;
import cn.iocoder.yudao.module.system.vo.user.profile.UserProfileUpdateReqVO;
import cn.iocoder.yudao.module.system.vo.user.user.*;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface UserConvert {

    UserConvert INSTANCE = Mappers.getMapper(UserConvert.class);

    UserPageItemRespVO convert(AdminUser bean);

    UserPageItemRespVO.Dept convert(Dept bean);

    AdminUser convert(UserCreateReqVO bean);

    AdminUser convert(UserUpdateReqVO bean);

    UserExcelVO convert02(AdminUser bean);

    AdminUser convert(UserImportExcelVO bean);

    UserProfileRespVO convert03(AdminUser bean);

    List<UserProfileRespVO.Role> convertList(List<Role> list);

    UserProfileRespVO.Dept convert02(Dept bean);

    AdminUser convert(UserProfileUpdateReqVO bean);

    AdminUser convert(UserProfileUpdatePasswordReqVO bean);

    List<UserProfileRespVO.Post> convertList02(List<Post> list);


    List<UserSimpleRespVO> convertList04(List<AdminUser> list);

    AdminUserRespDTO convert4(AdminUser bean);

    List<AdminUserRespDTO> convertList4(List<AdminUser> users);

}
